Computational Graphs (গণনা গ্রাফ) একটি অত্যন্ত গুরুত্বপূর্ণ ধারণা মেশিন লার্নিং এবং ডিপ লার্নিং মডেল ট্রেনিংয়ের জন্য। এটি গণনা এবং গ্র্যাডিয়েন্ট ক্যালকুলেশন প্রক্রিয়া সহজ করে তোলে। আসুন আমরা একটি বাস্তব উদাহরণ দেখি যেখানে Computational Graph ব্যবহার করা হয়, বিশেষ করে নিউরাল নেটওয়ার্কের জন্য ফিডফরোয়ার্ড এবং ব্যাকপ্রোপাগেশন প্রক্রিয়ায়।
উদাহরণ: সাধারণ নিউরাল নেটওয়ার্ক
ধরা যাক, আমাদের একটি সাধারণ নিউরাল নেটওয়ার্ক আছে যেখানে একটি ইনপুট, একটি হিডেন লেয়ার, এবং একটি আউটপুট লেয়ার রয়েছে। আমাদের লক্ষ্য হল ইনপুট x এবং টার্গেট আউটপুট y ব্যবহার করে মডেলটিকে ট্রেন করা।
১. নিউরাল নেটওয়ার্ক আর্কিটেকচার
- ইনপুট:
x - লুকানো লেয়ার:
h = w1 * x + b1 - আউটপুট:
y_pred = w2 * h + b2
এখানে, w1, w2 হল ওজন (weights) এবং b1, b2 হল বায়াস (bias)।
২. ফিডফরোয়ার্ড প্রক্রিয়া (Forward Pass)
ফিডফরোয়ার্ডে, ইনপুট ডেটা x প্রথমে ইনপুট স্তরে প্রবাহিত হয় এবং গ্রাফে মডেলের মধ্য দিয়ে চলতে থাকে।
প্রথম স্তর (লুকানো স্তর):
এখানে,
w1হল প্রথম লেয়ারের ওজন,xহল ইনপুট, এবংb1হল বায়াস।দ্বিতীয় স্তর (আউটপুট স্তর):
এখানে,
w2হল দ্বিতীয় স্তরের ওজন এবংb2হল বায়াস।
৩. কোস্ট ফাংশন (Loss Function)
ফিডফরোয়ার্ডে, মডেলের আউটপুট y_pred এবং আসল আউটপুট y এর মধ্যে ত্রুটি (error) পরিমাপ করতে হবে। আমরা মিন স্কোয়ার্ড এরর (Mean Squared Error, MSE) ব্যবহার করব:
এটি আমাদের মডেলের আউটপুট এবং আসল আউটপুটের মধ্যে ত্রুটি পরিমাপ করবে।
৪. ব্যাকপ্রোপাগেশন (Backpropagation)
ব্যাকপ্রোপাগেশন হল সেই প্রক্রিয়া যেখানে মডেলটি তার আউটপুট এবং আসল আউটপুটের মধ্যে ত্রুটি (error) পরিমাপ করে এবং সেই ত্রুটি ব্যবহার করে মডেলের ওজন (weights) আপডেট করে। ব্যাকপ্রোপাগেশন সময় চেইন রুল (Chain Rule) ব্যবহার করা হয়, যাতে গ্র্যাডিয়েন্ট ক্যালকুলেশন করা যায়।
লস ফাংশন এর গ্র্যাডিয়েন্ট ক্যালকুলেশন:
- প্রথমে, আউটপুট স্তরের জন্য গ্র্যাডিয়েন্ট ক্যালকুলেট করা হয়:
লুকানো স্তরের জন্য গ্র্যাডিয়েন্ট ক্যালকুলেশন:
- এরপর, লুকানো স্তরের জন্য গ্র্যাডিয়েন্ট ক্যালকুলেট করা হয়:
ওজন আপডেট (Weight Update):
- একটি অপটিমাইজেশন অ্যালগরিদম (যেমন, SGD বা Adam) ব্যবহার করে, আমরা আমাদের ওজন আপডেট করি:
এখানে,
ηহল শিখন হার (learning rate), যা ওজন আপডেটের গতি নির্ধারণ করে।
৫. Computational Graph
এখন এই সমস্ত গাণিতিক অপারেশনগুলির জন্য একটি Computational Graph তৈরি করা যেতে পারে, যেখানে প্রতিটি নোড একটি গাণিতিক অপারেশন (যেমন গুণফল, যোগফল) বা অ্যাক্টিভেশন ফাংশন উপস্থাপন করে এবং এজগুলি সম্পর্কগুলি নির্ধারণ করে।
Computational Graph এর উপাদান:
- নোড (Nodes): প্রতিটি গাণিতিক অপারেশন বা ফাংশন।
- এজ (Edges): ইনপুট এবং আউটপুট এর মধ্যে সম্পর্ক।
- গ্র্যাডিয়েন্ট ক্যালকুলেশন: ব্যাকপ্রোপাগেশন এর মাধ্যমে গ্র্যাডিয়েন্ট ক্যালকুলেশন এবং ওজন আপডেট।
উদাহরণ Computational Graph
+--------+ +--------+ +--------+
| x | ----> | w1 | ----> | h |
+--------+ +--------+ +--------+
|
v
+------------+
| Activation |
+------------+
|
v
+--------+
| w2 |
+--------+
|
v
+-------------+
| y_pred (output) |
+-------------+
এই গ্রাফের মাধ্যমে প্রতিটি স্তরের অপারেশন এবং সম্পর্ক দেখতে পারবেন, যেখানে x (ইনপুট), w1, w2 (ওজন), এবং y_pred (আউটপুট) এর মধ্যে সমস্ত গাণিতিক অপারেশন চিহ্নিত।
সারাংশ
Computational Graph হল একটি গ্রাফিকাল উপস্থাপনা যা গাণিতিক অপারেশন, ইনপুট এবং আউটপুট এর সম্পর্ক প্রদর্শন করে। এটি ফিডফরোয়ার্ড এবং ব্যাকপ্রোপাগেশন প্রক্রিয়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে, যেখানে ইনপুট থেকে আউটপুট পর্যন্ত তথ্য প্রবাহিত হয় এবং পরবর্তী ধাপে গ্র্যাডিয়েন্ট ক্যালকুলেশন ও ওজন আপডেট করা হয়। Computational Graph গুলি মডেলের ট্রেনিং প্রক্রিয়া সহজ এবং স্বয়ংক্রিয় করে তোলে।
Read more